package game.service;

import com.baomidou.mybatisplus.extension.service.IService;
import common.model.enums.ClassificationTypeEnum;
import common.model.po.GBlueprint;
import common.model.po.GClassification;
import common.model.response.base.Result;
import game.model.request.*;
import game.model.vo.CascadeClassificationVo;
import game.model.vo.ClassificationTreeVo;

import java.util.List;

/**
 * 分类服务类
 *
 * @author 米泽鹏
 * @since 2022-02-26
 */
public interface GClassificationService extends IService<GClassification> {

	/**
	 * 获取全部分类（级联选择器）
	 *
	 * @param classificationType 类别类型
	 * @return List<CascadeClassificationVo>
	 */
	List<CascadeClassificationVo> getCascadeClassification(ClassificationTypeEnum classificationType);

	/**
	 * 获取类别树
	 *
	 * @param classificationType 类别类型
	 * @return List<ClassificationTreeVo>
	 */
	List<ClassificationTreeVo> getClassificationTree(ClassificationTypeEnum classificationType);

	/**
	 * 类别保存
	 */
	Result<?> saveClassification(SaveClassificationRequest requestList);

	/**
	 * 给类别分配建筑，保存
	 */
	Result<String> saveClassificationBuilding(SaveClassificationBuildingRequest request);

	/**
	 * 给类别分配物品，保存
	 */
	Result<String> saveClassificationItem(SaveClassificationItemRequest request);

	/**
	 * 给类别分配物品，保存
	 */
	Result<String> saveClassificationCreature(SaveClassificationCreatureRequest request);

	/**
	 * 给类别分配商品，保存
	 */
	Result<String> saveClassificationProduct(SaveClassificationProductRequest request);

	/**
	 * 给类别分配蓝图，保存
	 */
	Result<String> saveClassificationBlueprint(SaveClassificationBlueprintRequest request);

	/**
	 * 查询一个类别下的蓝图
	 *
	 * @param classId 类别id
	 * @return List<GBlueprint>
	 */
	List<GBlueprint> getAllBlueprintByClassId(Long classId);

}
